#ifndef CommandH
#define CommandH
#include <string>
#include "Argv.h"
#include "VarMap.h"
#include "CheckValue.h"
#include "II2CRW.h"

class Command
{
public:
	Command(II2CRW *i2crw, VarMap *vmp, const std::string cmd) : m_i2crw(i2crw), m_vmp(vmp), m_argv(cmd), m_cmd(cmd)
	{
		m_argc = m_argv.count();
	}

	virtual ~Command() {}

	virtual int execute() = 0;

protected:
	virtual bool pickUp() = 0;
	virtual bool checkUp() = 0;

protected:
	VarMap *m_vmp;
	std::string m_cmd;
	Argv m_argv;
	size_t m_argc;
	II2CRW *m_i2crw;
private:

};

#endif // !CommandH

